package com.seed.core.pojo;

import com.seed.core.enumeration.PropertyType;

import java.util.Map;

/**
 * 单个属性的传输对象
 * type: column: 列，belongsTo:多对一，hasOne: 多对一,hasMany: 一对多, habtm: 多对多
 * id: 主表的ID, 即当前要操作的数据ID
 * name: 主表的名称，即当前要操作的数据名称，与id对应
 * value: 从表对应列的值，用于单个值时，即type为column,belongsTo, hasOne的情况
 * label: 从表对应列所在表的名称，与value对应，用于单个值时，即type为column,belongsTo, hasOne的情况
 * values: 从表对应列的value与label构成的键值对，键为value，值为label，用于多个值时，即type为hasMany和habtm的情况
 */
public class GetVO {
    private PropertyType type; // 属性类型
    private String id; // 主数据ID
    private String name; // 主数据名称，即name列的值，如张三
    private Object value; // 从数据列对应的值, 单个的情况，如列值，一对一，多对一对应的值
    private String label; // 从数据列对应的名称，多个用逗号分隔
    private Map<Object, String> values; // 从数据列对应的值, 多个的情况，如一对多，多对多对应的值，键为value，值为label

    public GetVO(String id, String name, PropertyType type) {
        this.id = id;
        this.name = name;
        this.type = type;
    }

    public GetVO(String id, String name, PropertyType type, Object value) {
        this(id, name, type);
        this.value = value;
    }

    public GetVO(String id, String name, PropertyType type, Object value, String label) {
        this(id, name, type);
        this.value = value;
        this.label = label;
    }

    public GetVO(String id, String name, PropertyType type, Map<Object, String> values) {
        this(id, name, type);
        this.values = values;
    }

    public PropertyType getType() {
        return type;
    }

    public void setType(PropertyType type) {
        this.type = type;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    public Map<Object, String> getValues() {
        return values;
    }

    public void setValues(Map<Object, String> values) {
        this.values = values;
    }
}
